package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import Entita.TavolaPaziente;
import Entita.Paziente;
import Entita.Tavola;
import Entita.TavolaPaziente;
import GUI.Main;

public class TavolaPazienteDAO
	{

		Connection con=null;
		PreparedStatement ptmt=null;
		ResultSet rs=null;

		public TavolaPazienteDAO()
		{

		}

		private Connection getConnection() throws SQLException
		{
			Connection conn;
			conn=ConnectionFactory.getInstance().getConnection();
			return conn;
		}


		public void add(TavolaPaziente tavolaPaziente)
		{
				
			int result=0;
			try
			{
				String querystring=	"INSERT INTO TavolaPaziente (ID_Paziente,ID_Tavola,Rifiuto,TempoLatenza,TempoTotale," +
									"Successione1,Successione2,Successione3,Choc,Manifestazione1,Manifestazione2,Manifestazione3,Manifestazione4," +
									"Manifestazione5,Raccolta,Inchiesta,IndiceRealta)" +
									"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
				con=getConnection();
				ptmt=con.prepareStatement(querystring);
				ptmt.setInt(1, tavolaPaziente.getIdPaziente());
				ptmt.setInt(2, tavolaPaziente.getIdTavola());
				ptmt.setBoolean(3, tavolaPaziente.isRifiuto());
				ptmt.setInt(4, tavolaPaziente.getTempoLatenza());
				ptmt.setInt(5, tavolaPaziente.getTempoTotale());
				ptmt.setString(6, tavolaPaziente.getSuccessione1());
				ptmt.setString(7, tavolaPaziente.getSuccessione2());
				ptmt.setString(8, tavolaPaziente.getSuccessione3());
				ptmt.setString(9, tavolaPaziente.getChoc());
				ptmt.setString(10, tavolaPaziente.getManifestazione1());
				ptmt.setString(11, tavolaPaziente.getManifestazione2());
				ptmt.setString(12, tavolaPaziente.getManifestazione3());
				ptmt.setString(13, tavolaPaziente.getManifestazione4());
				ptmt.setString(14, tavolaPaziente.getManifestazione5());
				ptmt.setString(15, tavolaPaziente.getRaccolta());
				ptmt.setString(16, tavolaPaziente.getInchiesta());
				ptmt.setInt(17, tavolaPaziente.getIndiceRealta());
				result=ptmt.executeUpdate();

			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			finally
			{
				try
				{
					if(rs!=null)
						rs.close();
					if(ptmt!=null)
						ptmt.close();
					if(con!=null)
						con.close();
				}
				catch(SQLException e)
				{
					Main.showError("Errore:"+e.getMessage());
				}
				catch(Exception e)
				{
					Main.showError("Errore:"+e.getMessage());
				}

			}

		}

		public void update(TavolaPaziente tavolaPaziente)
		{

			try
			{
				String querystring=	"UPDATE TavolaPaziente SET ID_Paziente=?, ID_Tavola=?, Rifiuto=?, TempoLatenza=?, TempoTotale=?, " +
						"Successione1=?, Successione2=?, Successione3=?, Choc=?, Manifestazione1=?, Manifestazione2=?, Manifestazione3=?, Manifestazione4=?, " +
						"Manifestazione5=?, Raccolta=?, Inchiesta=?, IndiceRealta=? " + 
						"WHERE ID_Paziente=? and ID_Tavola=?";
				con=getConnection();
				ptmt=con.prepareStatement(querystring);
				ptmt.setInt(1, tavolaPaziente.getIdPaziente());
				ptmt.setInt(2, tavolaPaziente.getIdTavola());
				ptmt.setBoolean(3, tavolaPaziente.isRifiuto());
				ptmt.setInt(4, tavolaPaziente.getTempoLatenza());
				ptmt.setInt(5, tavolaPaziente.getTempoTotale());
				ptmt.setString(6, tavolaPaziente.getSuccessione1());
				ptmt.setString(7, tavolaPaziente.getSuccessione2());
				ptmt.setString(8, tavolaPaziente.getSuccessione3());
				ptmt.setString(9, tavolaPaziente.getChoc());
				ptmt.setString(10, tavolaPaziente.getManifestazione1());
				ptmt.setString(11, tavolaPaziente.getManifestazione2());
				ptmt.setString(12, tavolaPaziente.getManifestazione3());
				ptmt.setString(13, tavolaPaziente.getManifestazione4());
				ptmt.setString(14, tavolaPaziente.getManifestazione5());
				ptmt.setString(15, tavolaPaziente.getRaccolta());
				ptmt.setString(16, tavolaPaziente.getInchiesta());
				ptmt.setInt(17, tavolaPaziente.getIndiceRealta());
				ptmt.setInt(18, tavolaPaziente.getIdPaziente());
				ptmt.setInt(19, tavolaPaziente.getIdTavola());
				ptmt.executeUpdate();

			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			finally
			{
				try
				{
					if(rs!=null)
						rs.close();
					if(ptmt!=null)
						ptmt.close();
					if(con!=null)
						con.close();
				}
				catch(SQLException e)
				{
					Main.showError("Errore:"+e.getMessage());
				}
				catch(Exception e)
				{
					Main.showError("Errore:"+e.getMessage());
				}

			}

		}

		public void delete(TavolaPaziente tavolaPaziente)
		{

			try
			{
				String querystring="DELETE FROM TavolaPaziente WHERE ID_TavolaPaziente=?";
				con=getConnection();
				ptmt=con.prepareStatement(querystring);
				ptmt.setInt(1, tavolaPaziente.getId());
				ptmt.executeUpdate();

			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			finally
			{
				try
				{
					if(rs!=null)
						rs.close();
					if(ptmt!=null)
						ptmt.close();
					if(con!=null)
						con.close();
				}
				catch(SQLException e)
				{
					Main.showError("Errore:"+e.getMessage());
				}
				catch(Exception e)
				{
					Main.showError("Errore:"+e.getMessage());
				}

			}

		}

		public TavolaPaziente getTavola(Paziente paziente,Tavola tavola)
		{
			try
			{
				String querystring="SELECT * FROM TavolaPaziente WHERE ID_Paziente=? AND ID_Tavola=?";
				con=getConnection();
				ptmt=con.prepareStatement(querystring);
				ptmt.setInt(1, paziente.getID());
				ptmt.setInt(2, tavola.getID());
				rs=ptmt.executeQuery();
				if(rs.next())
				{
					TavolaPaziente tavolaPaziente=new TavolaPaziente();
					tavolaPaziente.setId(rs.getInt("ID_TavolaPaziente"));
					tavolaPaziente.setTavola(tavola);
					tavolaPaziente.setPaziente(paziente);
					tavolaPaziente.setRifiuto(rs.getBoolean("Rifiuto"));
					tavolaPaziente.setTempoLatenza(rs.getInt("TempoLatenza"));
					tavolaPaziente.setTempoTotale(rs.getInt("TempoTotale"));
					tavolaPaziente.setSuccessione1(rs.getString("Successione1"));
					tavolaPaziente.setSuccessione2(rs.getString("Successione2"));
					tavolaPaziente.setSuccessione3(rs.getString("Successione3"));
					tavolaPaziente.setChoc(rs.getString("Choc"));
					tavolaPaziente.setManifestazione1(rs.getString("Manifestazione1"));
					tavolaPaziente.setManifestazione2(rs.getString("Manifestazione2"));
					tavolaPaziente.setManifestazione3(rs.getString("Manifestazione3"));
					tavolaPaziente.setManifestazione4(rs.getString("Manifestazione4"));
					tavolaPaziente.setManifestazione5(rs.getString("Manifestazione5"));
					tavolaPaziente.setRaccolta(rs.getString("Raccolta"));
					tavolaPaziente.setInchiesta(rs.getString("Inchiesta"));
					tavolaPaziente.setIndiceRealta(rs.getInt("IndiceRealta"));
					return tavolaPaziente;
				}else{
					return null;
				}
					
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			finally
			{
				try
				{
					if(rs!=null)
						rs.close();
					if(ptmt!=null)
						ptmt.close();
					if(con!=null)
						con.close();
				}
				catch(SQLException e)
				{
					Main.showError("Errore:"+e.getMessage());
				}
				catch(Exception e)
				{
					Main.showError("Errore:"+e.getMessage());
				}

			}
			return null;
		}
		
		
	}